package com.study.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Scala02_RDD_Operator_Transform {
  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(conf)

    // TODO 算子 - 转换 - mapPartitions
    // 将待处理的数据以分区为单位发送到计算节点进行处理
    // 性能比map高，类似批处理或者IO中的Buffer
    // 但是占用更多内存
    val rdd = sc.makeRDD(List(1,2,3,4),2)
    val rdd1 = rdd.mapPartitions(
      list => {
        println("***************")
        list.map(_*2)
      }
    )

    rdd1.collect().foreach(println)
    /*
    ***************
    ***************
    2
    4
    6
    8
     */

  }

}
